function transformTemplate(templateStr) {  
    let result = '';  
    let match;  
  
    const regex = /<for\s+el\s*=\s*(['"])(.*?)\1\s*>([\s\S]*?)<\/for>/g;  
  
    while ((match = regex.exec(templateStr)) !== null) {  
        const loopExpression = match[2].trim(); // 获取并修剪 el 属性的值  
        let loopBody = match[3].trim(); // 获取并修剪 <for> 和 </for> 之间的内容  
  
        // 如果 loopBody 末尾有换行符，并且您不希望保留它（这是可选的）  
        if (loopBody.endsWith('\n')) {  
            loopBody = loopBody.slice(0, -1);  
        }  
  
        // 构造 JavaScript 循环代码  
        // 直接将 loopBody 包含在模板字符串中，但不替换 #{...}  
        result += `for(${loopExpression}){str += \`${loopBody}\\n\`;\n}\n`;  
        // 注意：我在模板字符串的末尾添加了 \\n 来表示换行符，并在整个字符串后添加了分号  
        // 如果您不希望每个循环后都有换行符，可以移除 \\n  
    }  
  
    return result;  
}  
  
// 使用示例  
const template = `  
<for el="var i = 0; i < 3; i++"    >  
    <div>#{i}</div>  
    <p>Another line</p>  
</for>  
<for el='let j of ["a", "b", "c"]'      >
    if(j>10){
    <p>#{j.toUpperCase()}</p>  
    }
</for>  
`;  
  
const generatedCode = transformTemplate(template);
console.log(generatedCode);  
// 输出将包含原始的 #{...} 占位符，因为我们没有替换它们  
// for(var i = 0; i < 3; i++){str += `<div>#{i}</div>\n<p>Another line</p>\n`;}  
// for(let j of ["a", "b", "c"]){str += `<p>#{j.toUpperCase()}</p>\n`;}